﻿Public Class FrmCapNhatPhieuNhapKho
    Private flag As Boolean

    Private Sub FrmCapNhatPhieuNhapKho_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        LoadDSPN()
        LoadDSSP()

        LockButton(True)
        LockTextbox(False)
        GhiPN()
        Load_cbo()
    End Sub

    'load danh sach len data table
    Sub LoadDSSP()
        Dim ds As DataTable
        ds = CapNhatPhieuNhapKho_DAO.SelectAll()
        dgvChiTietPhieuNhap.DataSource = ds
    End Sub

    Sub LoadDSPN()
        Dim ds As DataTable
        ds = CapNhatPhieuNhapKho_DAO.SelectAllPN()
        dgvDSPhieuNhap.DataSource = ds
    End Sub

    'xóa trắng các textbox
    Sub ClearTextbox()
        txtSoPhieuNK.Text = ""
        txtSoLuongNK.Text = ""
        txtDonGiaNK.Text = ""
    End Sub

    'đồng bộ các nút chức năng giống nhau
    Sub LockButton(ByVal bt As Boolean)
        btnThemNK.Enabled = bt
        btnSuaNK.Enabled = bt
        btnXoaNK.Enabled = bt
        btnLuuNK.Enabled = Not bt
        btnKhongLuuNK.Enabled = Not bt
        btnThoat.Enabled = bt
        btnGhi.Enabled = Not bt
        btnXoa.Enabled = Not bt
        btnLuuCapNhatSua.Enabled = Not bt
    End Sub

    'lock các textbox 
    Sub LockTextbox(ByVal tb As Boolean)
        txtSoPhieuNK.Enabled = tb
        txtSoLuongNK.Enabled = tb
        txtDonGiaNK.Enabled = tb
        
        If tb = False Then
            txtSoPhieuNK.BackColor = Color.GreenYellow
            txtSoLuongNK.BackColor = Color.GreenYellow
            txtDonGiaNK.BackColor = Color.GreenYellow
        Else
            txtSoPhieuNK.BackColor = Color.White
            txtSoLuongNK.BackColor = Color.White
            txtDonGiaNK.BackColor = Color.White
        End If
    End Sub

    Sub Load_cbo()
        'load cbo ten kho
        cboTenKho.DataSource = DanhSachKhoHang_DAO.SelectAll()
        cboTenKho.DisplayMember = "TenKho"
        cboTenKho.ValueMember = "MaKho"
        
        'load cbo nhà cung cấp
        cboNCC.DataSource = CapNhatThongTinNCC_DAO.SelectAll()
        cboNCC.DisplayMember = "TenNhaCungCap"
        cboNCC.ValueMember = "MaNhaCungCap"

        'load cbo tên sản phẩm
        cboTenSanPham.DataSource = CapNhatThongTinSP_DAO.SelectAll()
        cboTenSanPham.DisplayMember = "TenSanPham"
        cboTenSanPham.ValueMember = "MaSanPham"

    End Sub

    Sub Them()
        Dim pnk As CapNhatPhieuNhapKho_DTO = New CapNhatPhieuNhapKho_DTO()
        pnk.SoPhieu = txtSoPhieuNK.Text
        pnk.MaNhaCungCap = cboNCC.SelectedValue
        pnk.NgayNhap = dtNgayNhap.Value

        CapNhatPhieuNhapKho_DAO.InsertPN(pnk)
        LoadDSPN()

        'danh sách phiếu nhập
    End Sub

    Sub Xoa()
        Dim pnk As CapNhatPhieuNhapKho_DTO = New CapNhatPhieuNhapKho_DTO()
        pnk.SoPhieu = txtSoPhieuNK.Text

        Dim q = MsgBox("Bạn có chắc muốn xóa số phiếu này", vbInformation + vbYesNo, "Thông Báo!")
        If q = vbYes Then
            CapNhatPhieuNhapKho_DAO.Delete(pnk) ' xóa sp trong bảng chi tiết phiếu nhập
            CapNhatPhieuNhapKho_DAO.DeletePN(pnk) ' xóa sp trong bảng phiếu nhập
            LoadDSPN()
            MsgBox("Số phiếu đã được xóa", vbInformation, "Thông Báo!")
        Else
            MsgBox("Đã hủy lệnh xóa !", vbExclamation, "Thông Báo!")
        End If
        
    End Sub

    Sub Sua()
        Dim pnk As CapNhatPhieuNhapKho_DTO = New CapNhatPhieuNhapKho_DTO
        pnk.id = txtid.Text
        pnk.SoPhieu = txtSoPhieuNK.Text
        pnk.MaSanPham = cboTenSanPham.SelectedValue
        pnk.SoLuong = txtSoLuongNK.Text
        pnk.DonGia = txtDonGiaNK.Text
        pnk.MaKho = cboTenKho.SelectedValue

        CapNhatPhieuNhapKho_DAO.Update(pnk)
        LoadDSPN()
    End Sub

    'ghi sản phẩm vào danh sách phiếu nhập tạm thời
    Sub GhiPN()
        dgvDSSPNK.Columns.Add("1", "Ma San Pham")
        dgvDSSPNK.Columns.Add("2", "So Luong")
        dgvDSSPNK.Columns.Add("3", "Don Gia")
        dgvDSSPNK.Columns.Add("4", "Ma Kho")
    End Sub

    'xoa sản phẩm trong danh sách phiếu nhập tạm thời
    Sub XoaPN()
        dgvDSSPNK.Rows.Remove(dgvDSSPNK.Rows(dgvDSSPNK.SelectedCells.Item(0).RowIndex))

    End Sub

    Private Function TestData() As Boolean
        TestData = True
        If Trim(txtSoPhieuNK.Text) = "" Then
            TestData = False
            MsgBox("Nhập tên số phiếu", MsgBoxStyle.Exclamation, "Thông Báo Lỗi")
            txtSoPhieuNK.Focus()
            Exit Function
        ElseIf Trim(txtSoLuongNK.Text) = "" Then
            TestData = False
            MsgBox("Nhập số lượng", MsgBoxStyle.Exclamation, "Thông Báo Lỗi")
            txtSoLuongNK.Focus()
            Exit Function
        ElseIf Trim(txtDonGiaNK.Text) = "" Then
            TestData = False
            MsgBox("Nhập đơn giá", MsgBoxStyle.Exclamation, "Thông Báo Lỗi")
            txtDonGiaNK.Focus()
            Exit Function
        End If
    End Function

    Private Sub btnThemNK_Click(sender As Object, e As EventArgs) Handles btnThemNK.Click
        flag = True
        LockTextbox(True)
        LockButton(False)
        ClearTextbox()
        ' txtSoPhieuNK.Focus()
    End Sub

    Private Sub btnLuuNK_Click(sender As Object, e As EventArgs) Handles btnLuuNK.Click
        If TestData() Then
            If flag = True Then
                Them()

                For Each ds As DataGridViewRow In dgvDSSPNK.Rows
                    'lay tung dong
                    Dim a = ds.Cells(0)
                    ' MsgBox(a.Value)
                    Dim pnk As CapNhatPhieuNhapKho_DTO = New CapNhatPhieuNhapKho_DTO
                    pnk.SoPhieu = txtSoPhieuNK.Text
                    pnk.MaSanPham = ds.Cells(0).Value
                    pnk.SoLuong = ds.Cells(1).Value
                    pnk.DonGia = ds.Cells(2).Value
                    pnk.MaKho = ds.Cells(3).Value

                    If Not String.IsNullOrEmpty(a.Value) Then
                        CapNhatPhieuNhapKho_DAO.Insert(pnk)
                    End If
                Next
            Else
                Sua()
            End If

            LockTextbox(False)
            LockButton(True)
            dgvChiTietPhieuNhap.Enabled = True
            MsgBox("Cập nhật dữ liệu thành công", MsgBoxStyle.Information, "Thông Báo")
            XoaPN()
        End If
    End Sub

    Private Sub btnKhongLuuNK_Click(sender As Object, e As EventArgs) Handles btnKhongLuuNK.Click
        LoadDSPN()
        Load_cbo()
        LockTextbox(False)
        LockButton(True)
        dgvChiTietPhieuNhap.Enabled = True

        For Each ds As DataGridViewRow In dgvDSSPNK.Rows
            If (dgvDSSPNK.SelectedRows.Count > 0) Then
                dgvDSSPNK.Rows.Remove(dgvDSSPNK.Rows(dgvDSSPNK.SelectedCells.Item(0).RowIndex))
            End If
        Next
    End Sub

    Private Sub btnSuaNK_Click(sender As Object, e As EventArgs) Handles btnSuaNK.Click
        flag = False
        LockTextbox(True)
        LockButton(False)
        dgvChiTietPhieuNhap.Enabled = False
        txtSoPhieuNK.Focus()
    End Sub

    Private Sub btnXoaNK_Click(sender As Object, e As EventArgs) Handles btnXoaNK.Click
        Xoa()
    End Sub

    Private Sub btnThoat_Click(sender As Object, e As EventArgs) Handles btnThoat.Click
        Me.Close()
    End Sub

    Sub HienThiChiTietPhieuNhap() ' hiển thị dgv chi tiết phiếu nhập 
        If (dgvChiTietPhieuNhap.SelectedRows.Count > 0) Then
            txtid.Text = dgvChiTietPhieuNhap.SelectedRows(0).Cells(0).Value.ToString()
            cboTenSanPham.SelectedValue = dgvChiTietPhieuNhap.SelectedRows(0).Cells(2).Value.ToString()
            txtSoLuongNK.Text = dgvChiTietPhieuNhap.SelectedRows(0).Cells(3).Value.ToString()
            txtDonGiaNK.Text = dgvChiTietPhieuNhap.SelectedRows(0).Cells(4).Value.ToString()
            cboTenKho.SelectedValue = dgvChiTietPhieuNhap.SelectedRows(0).Cells(5).Value.ToString()

        End If
    End Sub

    Private Sub dgvChiTietPhieuNhap_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvChiTietPhieuNhap.CellContentClick
        HienThiChiTietPhieuNhap()
    End Sub

    Private Sub dgvChiTietPhieuNhap_SelectionChanged(sender As Object, e As EventArgs) Handles dgvChiTietPhieuNhap.SelectionChanged
        HienThiChiTietPhieuNhap()
    End Sub

    Private Sub btnGhi_Click(sender As Object, e As EventArgs) Handles btnGhi.Click ' lưu tạm sản phẩm vào dgv DSSP
        dgvDSSPNK.Rows.Add(cboTenSanPham.SelectedValue, txtSoLuongNK.Text, txtDonGiaNK.Text, cboTenKho.SelectedValue)
    End Sub

    Private Sub btnXoa_Click(sender As Object, e As EventArgs) Handles btnXoa.Click
        XoaPN()
    End Sub

   
    Private Sub dgvDSPhieuNhap_SelectionChanged(sender As Object, e As EventArgs) Handles dgvDSPhieuNhap.SelectionChanged
        If (dgvDSPhieuNhap.SelectedRows.Count > 0) Then
            Dim sp As String = dgvDSPhieuNhap.SelectedRows(0).Cells(0).Value.ToString()

            dgvChiTietPhieuNhap.DataSource = CapNhatPhieuNhapKho_DAO.SelectBySP(sp)
            ' dgvDSSPNK.DataSource = CapNhatPhieuNhapKho_DAO.SelectBySP1(sp)

            txtSoPhieuNK.Text = sp
     End If
    End Sub

End Class